<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chapter 5. Модификаторы переменных</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Руководство по Smarty">
<link rel="up" href="smarty.for.designers.html" title="Part II. Smarty для дизайнеров шаблонов">
<link rel="prev" href="language.variables.smarty.html" title="Зарезервированная переменная {$smarty}">
<link rel="next" href="language.modifier.cat.html" title="cat">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">Chapter 5. Модификаторы переменных</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="language.variables.smarty.html">Prev</a> </td>
<th width="60%" align="center">Part II. Smarty для дизайнеров шаблонов</th>
<td width="20%" align="right"> <a accesskey="n" href="language.modifier.cat.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="chapter" title="Chapter 5. Модификаторы переменных">
<div class="titlepage"><div><div><h2 class="title">
<a name="language.modifiers"></a>Chapter 5. Модификаторы переменных</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="sect1"><a href="language.modifiers.html#language.modifier.capitalize">capitalize</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.cat.html">cat</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.characters.html">count_characters</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.paragraphs.html">count_paragraphs</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.sentences.html">count_sentences</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.words.html">count_words</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.date.format.html">date_format</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.default.html">default</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.escape.html">escape</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.indent.html">indent</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.lower.html">lower</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.nl2br.html">nl2br</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.regex.replace.html">regex_replace</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.replace.html">replace</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.spacify.html">spacify</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.string.format.html">string_format</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.strip.html">strip</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.strip.tags.html">strip_tags</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.truncate.html">truncate</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.upper.html">upper</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.wordwrap.html">wordwrap</a></span></dt>
</dl>
</div>
<p>
  Модификаторы переменных могут быть прмменены к
  <a class="link" href="language.syntax.variables.html" title="Переменные">переменным</a>,
  <a class="link" href="language.custom.functions.html" title="Chapter 8. Пользовательские Функции">пользовательским функциям</a>
  или строкам. Для их применения надо после модифицируемого значения
  указать символ <code class="literal">|</code> (вертикальная черта) и название модификатора.
  Так же модификаторы могут принимать параметры, которые влияют на их поведение.
  Эти параметры следуют за названием модификатора и разделяются
  <code class="literal">:</code> (двоеточием). Кроме того, <span class="emphasis"><em>все функции PHP
  могут быть использованы в качестве модификаторов</em></span> (об этом дальше)
  и модификаторы можно
  <a class="link" href="language.combining.modifiers.html" title="Chapter 6. Комбинирование модификаторов">комбинировать</a>.
 </p>
<div class="example">
<a name="id2652795"></a><p class="title"><b>Example 5.1. Примеры модификаторов</b></p>
<div class="example-contents"><pre class="programlisting">

{* применение модификатора к переменной *}
{$title|upper}

{* модификатор с параметрами *}
{$title|truncate:40:'...'}

{* применение модификатора к аргументу функции *}
{html_table loop=$myvar|upper}

{* с параметрами *}
{html_table loop=$myvar|truncate:40:'...'}

{* применение модификатора к строке *}
{'foobar'|upper}

{* использование date_format для форматирования текущей даты *}
{$smarty.now|date_format:"%Y/%m/%d"}

{* применение модификатора к функции *}
{mailto|upper address='smarty@example.com'}

{* использование функции PHP str_repeat *}
{'='|str_repeat:80}

{* функция PHP count *}
{$myArray|@count}

{* функция PHP shuffle, применяемая к IP адресу сервера *}
{$smarty.server.SERVER_ADDR|shuffle}

(* это приведет в верхний регистр букв и обрежет пробелы у всех элементов массива *}
&lt;select name="name_id"&gt;
    {html_options output=$myArray|upper|truncate:20}
&lt;/select&gt;

  </pre></div>
</div>
<br class="example-break"><div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>
  Если модификатор применяется к переменной-массиву, то он будет применен к
  каждому элементу массива. Если же требуется применить модификатор к массиву,
  как к переменной, то необходимо перед именем модификатора указать символ
  <code class="literal">@</code>.

  </p>
<div class="note" title="Пример" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Пример</h3>
<p>
    <code class="literal">{$articleTitle|@count}</code> - выведет количество елементов
    в массиве <em class="parameter"><code>$articleTitle</code></em> используя стандартную
    функцию PHP
    <a class="ulink" href="http://php.net/count" target="_top"><code class="varname">count()</code></a>
    в качестве модификатора.
   </p>
</div>
<p>
 </p>
</li>
<li class="listitem">
<p>
  Модификаторы автоматически загружаются из директории <a class="link" href="variable.plugins.dir.html" title="$plugins_dir"><em class="parameter"><code>$plugins_dir</code></em></a>
  или могут быть явно зарегистрированы при помощи функции
  <a class="link" href="api.register.modifier.html" title="register_modifier">
  <code class="varname">register_modifier()</code></a>;
  это удобно для использования функции как в PHP-коде, так и в шаблоне.
 </p>
<p>
  Любая PHP-функция может быть использована в качестве модификатора.
  Тем не менее, использование PHP-функций в качестве модификаторов
  имеет две маленькие "ловушки":
  </p>
<div class="itemizedlist"><ul class="itemizedlist" type="circle">
<li class="listitem"><p>
     Во-первых, иногда порядок аргументов функции не самый удобный.
     Форматирование <code class="literal">$foo</code> при помощи
     <code class="literal">{"%2.f"|sprintf:$float}</code> - это рабочий, но
     не совсем удобный вариант.
     Больше подойдет <code class="literal">{$float|string_format:"%2.f"}</code>,
     который предлагает дистрибутив Smarty).
    </p></li>
<li class="listitem"><p>     
     Во-вторых, в случае включения <a class="link" href="variable.security.html" title="$security">$security</a>, все PHP-функции, которые будут
     использованы как модификаторы, должны быть объявлены "безопасными"
     в элементе <code class="literal">MODIFIER_FUNCS</code> массива
     <a class="link" href="variable.security.settings.html" title="$security_settings">
     <em class="parameter"><code>$security_settings</code></em></a>.
    </p></li>
</ul></div>
<p>
 </p>
</li>
</ul></div>
<p>
  См. также
  <a class="link" href="api.register.modifier.html" title="register_modifier">
  <code class="varname">register_modifier()</code></a>,
  <a class="link" href="language.combining.modifiers.html" title="Chapter 6. Комбинирование модификаторов">
  Комбинирование модификаторов</a> и
  <a class="link" href="plugins.html" title="Chapter 16. Плагины - расширение функциональности Smarty">Плагины - расширение функциональности Smarty</a>.
 </p>
<div class="sect1" title="capitalize">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="language.modifier.capitalize"></a>capitalize</h2></div></div></div>
<p>
  Преобразовывает первые буквы каждого в переменной слова в заглавные.
 </p>
<div class="informaltable"><table border="1">
<colgroup>
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col>
</colgroup>
<thead><tr>
<th align="center">Позиция параметра</th>
<th align="center">Тип</th>
<th align="center">Обязателен</th>
<th align="center">По умолчанию</th>
<th>Описание</th>
</tr></thead>
<tbody><tr>
<td align="center">1</td>
<td align="center">boolean</td>
<td align="center">Нет</td>
<td align="center">false</td>
<td>Этот параметр определяет, распространяется ли действие
      модификатора на слова с цифрами</td>
</tr></tbody>
</table></div>
<div class="example">
<a name="id2653777"></a><p class="title"><b>Example 5.2. capitalize</b></p>
<div class="example-contents">
<pre class="programlisting">

&lt;?php

$smarty-&gt;assign('articleTitle', 'next x-men film, x3, delayed.');

?&gt;

   </pre>
<p>
    Шаблон:
   </p>
<pre class="programlisting">

{$articleTitle}
{$articleTitle|capitalize}
{$articleTitle|capitalize:true}

   </pre>
<p>
    Результат обработки:
   </p>
<pre class="screen">

next x-men film, x3, delayed.
Next X-Men Film, x3, Delayed.
Next X-Men Film, X3, Delayed.

   </pre>
</div>
</div>
<br class="example-break"><p>
  См. также
  <a class="link" href="language.modifier.lower.html" title="lower">lower</a>
  и
  <a class="link" href="language.modifier.upper.html" title="upper">upper</a>
 </p>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="language.variables.smarty.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="smarty.for.designers.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="language.modifier.cat.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Зарезервированная переменная {$smarty} </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> cat</td>
</tr>
</table>
</div>
</body>
</html>
